#include "main.h"

// 学生功能函数
// 学生登录
void Student_Func(list_str *list)
{
    // 登录
    int user_index = 0;
    if (!Student_log_in(list, &user_index))
    {
        printf("登录失败\n");
        exit(-1);
    }
    system("clear");
    printf("              登录成功            \n");
    printf("         欢迎来到学生系统             \n");
    int op = 0;
    while (1)
    {
        // 写一个菜单
        printf("\n");
        printf("你可以进行如下操作(1~5):\n");
        printf("1、查看自己信息\n");
        printf("2、打开乘法表\n");
        printf("3、猜数字游戏\n");
        printf("4、使用计算器\n");
        printf("5、退出\n");
        printf("请输入你要进行的操作编号:");
        scanf("%d", &op);
        switch (op)
        {
        case 1:
            /* 查信息 */
            {
                stu_user data;
                printf("请输入你的姓名:\t");
                scanf("%s", data.name);
                list_Student_find(list, data);
                break;
            }
        case 2:
            /* 乘法表 */
            table();
            break;
        case 3:
            /* 猜数字 */
            guess();
            break;
        case 4:
            /* 计算器 */
            calculator();
            break;
        case 5:
            /*退出*/
            {
                printf("退出成功\n");
                return;
                break;
            }
        default:
            printf("输入错误\n");
            break;
        }
    }
}

// 老师登录
void Teacher_Func(list_str *list)
{
    // 登录
    if (!Teacher_log_in(list))
    {
        printf("登录失败\n");
        exit(-1);
    }
    system("clear");
    printf("                登录成功           \n");
    printf("            欢迎来到老师系统        \n");
    int op = 0; // 菜单选项
    while (1)
    {
        // 写一个菜单
        printf("\n");
        printf("你可以进行如下操作:\n");
        printf("1、增加学生\n");
        printf("2、删除学生\n");
        printf("3、成绩排序\n");
        printf("4、修改学生\n");
        printf("5、查看学生\n");
        printf("6、退出\n");

        scanf("%d", &op);
        switch (op)
        {
        case 1:
        {
            /*增加学生信息*/
            stu_user data;
            system("clear");
            printf("请输入你要加入的学生信息\n");
            printf("账号 密码 姓名 性别 学号 年龄 成绩\n");
            scanf("%s %s %s %s %d %d %d",
                  data.user_name, data.password, data.name, data.sex,
                  &data.id, &data.age, &data.sco);
            list_add(list, data);
            list_printf(list);
            list_update_file(list);
            break;
        }
        case 2:
        {
            /*删除学生信息*/
            system("clear");
            list_del(list);     
            list_printf(list);
            list_update_file(list);
            break;
        }
        case 3:
        {
            /*按成绩排序*/
            system("clear");
            list_sort(list);          
            list_printf(list);
            list_update_file(list);
            break;
        }
        case 4:
        {
            /*修改学生信息*/
            system("clear");
            list_Teacher_alter(list);
            list_printf(list);
            list_update_file(list);
            break;
        }
        case 5:
        {
            /*查找学生信息*/
            system("clear");
            int index=-1;
            index=list_Teacher_find(list);
            if(index!=-1)
            {
              printf("--------------------------查找成功-------------------------\n");
              printf("%s\t%s\t%s\t%s\t%d\t%d\t%d\n",\
                list->date[index].user_name,list->date[index].password,\
                list->date[index].name,list->date[index].sex,list->date[index].id,\
                list->date[index].age,list->date[index].sco
                    );
            }
            else
            {
              printf("查找失败\n");
              break;
            }
            break;    
        }
        case 6:
        {
            /*退出*/
            printf("退出成功\n");
            return;
            break;
        }
        default:
            break;
        }
    }
}

int main(int argc, char const *argv[])
{
    // 定义表
    list_str *list;

    // 创建动态内存
    list_init(&list);

    // 将文件内容更新到表
    file_update_list(list);

    //遍历程序
    //list_printf(list);

    // 选择 老师 或 学生登录
    int op = 0;
    system("clear");
    printf("---------------------欢迎来到登录界面------------------\n\n");

    printf(" 1、学生登录                                 2、老师登录\n");
    printf("请选择你要登录的系统(1~2):");
    scanf("%d", &op);
    switch (op)
    {
    case 1:
        Student_Func(list);//进入学生登录系统
        break;
    case 2:
        Teacher_Func(list);//进入老师登录系统
        break;
    default:
        break;
    }
    return 0;
}
